package pixel;

/*
 *  es wird der Farbverlauf (PPMBildSchreiben.java) (als PNG-Bild)
 *  angezigt. Zusaetzlich das gleiche Bild, extern (IrfanView)
 *  komprimiert.
 *  (Dateigroesse: 80.6 KB, komprimiert: 497 Bytes)
 */

/*
 * Laden (und Anzeigen) eines BufferedImage
 */

import javax.swing.*;
import java.awt.*; // Graphics
import java.awt.event.*;
import java.awt.image.*; // BufferedImage
import javax.imageio.ImageIO;
import java.io.*;


public class PPM2PNG extends JApplet {
  // Exemplar-Konstante:

  // Exemplar-Variablen:

  // Komponenten deklarieren:
  private JButton btnStart;
  private MeinPanel pZentral;

  // Komponenten erzeugen:
  private void erzeugeKomponenten() {
    btnStart= new JButton("los geht's!");
    pZentral= new MeinPanel();
  }

  // Zuhoerer registrieren:
  private void registriereZuhoerer() {
    btnStart.addActionListener(new BL());
  }

  // Layout aufbauen:
  private void baueLayout() {
    Container cp = getContentPane();
    cp.setLayout(new BorderLayout());
    // NORTH
    JPanel pN= new JPanel(new FlowLayout(FlowLayout.RIGHT));
    pN.add(btnStart);
    cp.add(pN, BorderLayout.NORTH);
    // CENTER
    cp.add(pZentral, BorderLayout.CENTER);
  }

  // Konstruktor:
  // ganz weglassen: d.h. im Frame (spaeter) nur Standard
  // statt dessen: init

  public void init() {
    erzeugeKomponenten();
    registriereZuhoerer();
    baueLayout();
    // das GIFBild laden:
    //PNG, erzeugt mit Java
    try {
      pZentral.dasPNGBild= ImageIO.read(new File("Bild-200.png"));
      // PNG, komprimiert mit Stufe 9:
      pZentral.dasPNG9Bild= ImageIO.read(new File("Bild-200-9.png"));
    }
catch (IOException ioe) { }
    // zur Sicherheit:
    pZentral.istKnopfGedrueckt= false;
  }

  // Zuhoerer (als innere Klasse)

  public class BL implements ActionListener {
    public void actionPerformed(ActionEvent e) {
      pZentral.istKnopfGedrueckt= true;
      pZentral.repaint();
    }
  }

  // die eigentliche Arbeit:
  private void doIt() {
    // hier: arbeitslos
  }

  public static void main(String[] args) {
    PPM2PNG meinAppchen= new PPM2PNG();
    JFrame meinFrame= new JFrame("Applet-Applikation-Bild");
    meinFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    meinFrame.getContentPane().add(meinAppchen, BorderLayout.CENTER);
    meinAppchen.init();
    meinAppchen.start();

    meinFrame.setSize(600, 500);
    meinFrame.setVisible(true);
  }

  class MeinPanel extends JPanel {
    // Exemplar-Variablen:
    boolean istKnopfGedrueckt= false;
    BufferedImage dasPNGBild= null;
    BufferedImage dasPNG9Bild= null;

    public  void paintComponent(Graphics g) {
      super.paintComponent(g);
      if (istKnopfGedrueckt) {
        //			g.drawRect(30, 10, 40, 60);
        //			g.drawString ("mit drawRect erzeugt", 260, 40);
        g.drawImage(dasPNGBild, 30, 10, this);
        g.drawString("ein PNGBild (mit Java erzeugt)", 260, 130);
        g.drawImage(dasPNG9Bild, 30, 220, this);
        g.drawString("ein PNG9Bild (komprimiert, Stufe 9)", 260, 280);
      }
    }
  }
}
